package persistance.dal;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import ucc.objects.FonctionDTO;
import exception.DataAccesException;

public class FonctionPersisterImpl implements FonctionPersister {

	private PreparedStatement queryInsert;
	private PreparedStatement queryUpdate;
	private static final String INSERT = "insert into caisse.fonctions (designation, "
			+ "droits, administrateur, superadministrateur)"
			+ "values (?, ?, ?, ?)";
	private static final String UPDATE = "update caisse.fonctions set "
			+ "designation=?, droits=?, administrateur=?, superadministrateur=? "
			+ "where id_fonction=?";

	public FonctionPersisterImpl() {
		this.queryInsert = DalBackEndServices.INSTANCE.prepare(INSERT);
		this.queryUpdate = DalBackEndServices.INSTANCE.prepare(UPDATE);
	}

	public void insert(FonctionDTO nouvelleFonction) {
		try {
			queryInsert.setString(1, nouvelleFonction.getDesignation());
			queryInsert.setInt(2, nouvelleFonction.getDroits());
			queryInsert.setBoolean(3, nouvelleFonction.isAdministrateur());
			queryInsert.setBoolean(4, nouvelleFonction.isSuperadministrateur());
			queryInsert.execute();
		} catch (SQLException sqlE) {
			sqlE.printStackTrace();
			throw new DataAccesException(
					"SQL/JDBC Connection, Statement, executeQuery problem \n",
					sqlE);
		}
	}

	public void update(FonctionDTO fonction) {
		try {
			queryUpdate.setString(1, fonction.getDesignation());
			queryUpdate.setInt(2, fonction.getDroits());
			queryUpdate.setBoolean(3, fonction.isAdministrateur());
			queryUpdate.setBoolean(4, fonction.isSuperadministrateur());
			queryUpdate.setInt(5, fonction.getId());
			queryUpdate.execute();
		} catch (SQLException sqlE) {
			sqlE.printStackTrace();
			throw new DataAccesException(
					"SQL/JDBC Connection, Statement, executeQuery problem \n",
					sqlE);
		}
	}
}
